// 1. 导入axios的依赖包
import axios from "axios";
import router from '../router'

let baseUrl = ''
//利用node环境变量判断，区分开发、发布
if (process.env.NODE_ENV === 'development') { //开发
    baseUrl = "https://www.liulongbin.top:8888/api/private/v1"
} else if (process.env.NODE_ENV === 'production') { //发布
    baseUrl = 'https://www.liulongbin.top:8888/api/private/v1'
}

//2. 创建axios对象信息
const http = axios.create({
    baseURL: baseUrl,
    timeout: 5000,
})

//3. 定义请求拦截器，token值。。。
http.interceptors.request.use(function (config) {
    // console.log('请求拦截器',config);
    config.headers.Authorization = window.sessionStorage.getItem("token")
    return config;
}, function (error) {
    return Promise.reject(error)
})


//4. 定义响应拦截器， 格式化返回的数据
http.interceptors.response.use(function (config) {
    // console.log("相应拦截器:",response);
    //对数据进行格式化的操作了。
    switch (config.status) {
        case 200://成功状态
            let responseData = config.data;
            //成功后的状态码异常处理
            switch (responseData.meta.status) {
                case 404://后端返回code  404
                    router.push("/404")
                    console.log("跳转到404");
                    break;
                case 500://后端返回code  500
                    console.log("跳转到500");
                    break;
                case "token过期":
                    router.push("/login")
            }
            break;
        case 404://http404状态
            console.log("跳转到404");
            break;
        case 500://http500处理
            console.log("跳转到500");
            break;
    }
    return config.data;
}, function (error) {
    return Promise.reject(error)
})


// 5. 抛出对象，main.js中引入拦截器的信息。
export default http;